package com.lq.cart.service;

import com.lq.cart.entity.Cart;
import com.lq.cart.vo.CartDetailVO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 购物车表 服务类
 * </p>
 *
 * @author lq
 * @since 2025-08-23
 */
public interface ICartService extends IService<Cart> {

    /**
     * 根据用户ID获取购物车列表
     * @param userId 用户ID
     * @return 购物车列表
     */
    List<CartDetailVO> getByUserId(Long userId);

    /**
     * 添加商品到购物车
     * @param userId 用户ID
     * @param productId 商品ID
     * @return 是否添加成功
     */
    boolean addProductToCart(Long productId);

    /**
     * 更新购物车商品数量
     * @param cartId 购物车ID
     * @param quantity 商品数量
     * @return 是否更新成功
     */
    boolean updateCartQuantity(Long cartId, Integer quantity);

    /**
     * 更新购物车选中状态
     * @param cartId 购物车ID
     * @param checked 选中状态
     * @return 是否更新成功
     */
    boolean updateCartChecked(Long cartId, Integer checked);

    /**
     * 删除购物车项
     * @param cartId 购物车ID
     * @return 是否删除成功
     */
    boolean removeCart(Long cartId);

    /**
     * 根据用户ID获取选中的购物车项
     * @param userId 用户ID
     * @return 选中的购物车项列表
     */
    List<Cart> getCheckedItemsByUserId(Long userId);

    /**
     * 获取购物车详情
     *
     * @param cartId 购物车ID
     * @return 购物车详情
     */
    CartDetailVO getCartDetail(Long cartId);

}